#include "app_config.h"

#if APP_SELECT_EXAMPLE == 0

#include "polsys.h"


static polsys_task_t mTimer1000ms;

static u32 cnt=0;

static vu32 AdcConvertCount[8] = {0,};
static vu16 AdcResult[8];
static u32 AdcConvertCountLast[8] = {0,};
static u32 AdcRate[8];

static void mTimer();

// ADC转换完成事件
static void Adc_EventDone(adc_ch_t ch, u16 result)
{
    AdcConvertCount[ch]++;
    AdcResult[ch] = result;
}


// 启动事件，程序启动时执行一次
void App_Load()
{
    Gpio_Init();
    Adc_Init();
    Adc_Enable(ADC_CH2_MASK|ADC_CH3_MASK|ADC_CH4_MASK|ADC_CH5_MASK|ADC_CH6_MASK|ADC_CH7_MASK);
    // Adc_Enable(ADC_CH0_MASK|ADC_CH1_MASK);
    Adc_SetCb(ADC_CH0, Adc_EventDone);
    Adc_SetCb(ADC_CH1, Adc_EventDone);
    Adc_SetCb(ADC_CH2, Adc_EventDone);
    Adc_SetCb(ADC_CH3, Adc_EventDone);
    Adc_SetCb(ADC_CH4, Adc_EventDone);
    Adc_SetCb(ADC_CH5, Adc_EventDone);
    Adc_SetCb(ADC_CH6, Adc_EventDone);
    Adc_SetCb(ADC_CH7, Adc_EventDone);
    Adc_StartAutoScan(ADC_CH2_MASK|ADC_CH3_MASK|ADC_CH4_MASK|ADC_CH5_MASK|ADC_CH6_MASK|ADC_CH7_MASK);
    // Adc_StartAutoScan(ADC_CH0_MASK|ADC_CH1_MASK);
    

    // Adc_Disable(ADC_CH4_MASK|ADC_CH5_MASK);

    // Adc_StopAutoScan(ADC_CH6_MASK);

    Polsys_TaskInit(&mTimer1000ms,mTimer,1000);
}

static void mTimer()
{
    cnt++;
    LOG("Polsys Run Time: %d\r\n",cnt);

    for(int i=0;i<8;i++)
    {
        AdcRate[i] = (AdcConvertCount[i] - AdcConvertCountLast[i]);
        AdcConvertCountLast[i] = AdcConvertCount[i];
        LOG("[Adc CH%d]Count:%d,Rate:%d/s,Last result:%d,%dmV\r\n", i, AdcConvertCount[i], AdcRate[i], AdcResult[i], AdcResult[i] * Adc_GetVrefVoltage() / Adc_GetFullValue());
    }
    
}





#endif
